﻿#define _CRT_SECURE_NO_WARNINGS 1
//#include <stdio.h>
//char* my_strcat(char* dest, const char* src) {
//	char* lianjie = dest;
//	while (*dest != '\0') {
//		dest++;
//	}
//	while ((*dest++ = *src++) != '\0') {
//
//	}
//	return lianjie;
//}
//int main() {
//	char str1[20] = "Hello";
//	my_strcat(str1, "World!");
//	printf("%s", str1);
//	return 0;
//}

//#include <stdio.h>
//int main() {
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p = &arr[0];
//	printf("arr[0]=%p\n", &arr[0]);
//	printf("arr   =%p\n", arr);
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	printf("%zu\n", sizeof(arr));
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	printf("&arr[0] = %p\n", &arr[0]);
//	printf("   arr  = %p\n", arr);
//	printf("  &arr  = %p\n", &arr);
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	printf("  &arr[0] = %p\n", &arr[0]);
//	printf("&arr[0]+1 = %p\n", &arr[0] + 1);
//	printf("      arr = %p\n", arr);
//	printf("    arr+1 = %p\n", arr + 1);
//	printf("     &arr = %p\n", &arr);
//	printf("   &arr+1 = %p\n", &arr + 1);
//	return 0;
//}

//#include <stdio.h>
//int main() {
//	int arr[20] = { 0 };
//	//输入
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int* p = arr;
//	for (i = 0; i < sz; i++) {
//		scanf("%d ", p + i);
//		//scanf("%d ", arr + i);//这样写也可以
//	}
//	for (i = 0; i < sz; i++) {
//		printf("%d ", *(p + i));
//	}
//}
//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 0 };//[10]表示最多存储10个元素
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	//输⼊
//	int* p = arr;
//	printf("请输入10位数字:");
//	for (i = 0; i < sz; i++)
//	{
//		scanf("%d" , p + i);
//		//scanf("%d", arr+i);//也可以这样写
//	}
//	//输出
//	printf("输出:");
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", *(p + i));
//	}
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 0 };
//	//输⼊
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	//输⼊
//	int* p = arr;
//	printf("输入:");
//	for (i = 0; i < sz; i++)
//	{
//		scanf("%d", p + i);
//		//scanf("%d", arr+i);//也可以这样写
//	}
//	//输出
//	printf("输出:");
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", p[i]);
//	}
//	return 0;
//}

//#include <stdio.h>
//void test(int arr[])
//{
//	int sz2 = sizeof(arr) / sizeof(arr[0]);
//	printf("sz2 = %d\n", sz2);
//}
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz1 = sizeof(arr) / sizeof(arr[0]);
//	printf("sz1 = %d\n", sz1);
//	test(arr);
//	return 0;
//}
//#include <stdio.h>
////void test(int arr[])//参数写成数组形式，本质上还是指针
////{
////    printf("%d\n", sizeof(arr));
////}
//void test(int* arr)//参数写成指针形式
//{
//	printf("%d\n", sizeof(arr));//计算⼀个指针变量的⼤⼩
//}
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	test(arr);
//	return 0;
//}

//#include <stdio.h>
//void bubble_sort(int arr[], int sz)//参数接收数组元素个数
//{
//	int i = 0;
//	for (i = 0; i < sz - 1; i++)
//	{
//		int j = 0;
//		for (j = 0; j < sz - i - 1; j++)
//		{
//			if (arr[j] > arr[j + 1])
//			{
//				int tmp = arr[j];
//				arr[j] = arr[j + 1];
//				arr[j + 1] = tmp;
//			}
//		}
//	}
//}
//int main()
//{
//	int arr[] = { 3,1,7,5,8,9,0,2,4,6 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	bubble_sort(arr, sz);
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}


// ⽅法2 - 优化
//void bubble_sort(int arr[], int sz)//参数接收数组元素个数
//{
//	int i = 0;
//	for (i = 0; i < sz - 1; i++)
//	{
//		int flag = 1;//假设这⼀趟已经有序了
//		int j = 0;
//		for (j = 0; j < sz - i - 1; j++)
//		{
//			if (arr[j] > arr[j + 1])
//			{
//				flag = 0;//发⽣交换就说明，⽆序
//				int tmp = arr[j];
//				arr[j] = arr[j + 1];
//				arr[j + 1] = tmp;
//			}
//		}
//		if (flag == 1)//这⼀趟没交换就说明已经有序，后续⽆序排序了
//			break;
//	}
//}
//int main()
//{
//	int arr[] = { 3,1,7,5,8,9,0,2,4,6 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	bubble_sort(arr, sz);
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}
//#include <stdio.h>
//int main() 
//{
//	int a = 10;
//	int* pa = &a;
//	int** ppa = &pa;
//
//	return 0;
//}

#include <stdio.h>
int main() {
	int arr1[] = { 1,2,3,4,5,6 };
	int arr2[] = { 2,3,4,5,6,7 };
	int arr3[] = { 3,4,5,6,7,8 };
	//实现一个三行六列的二维数组
	// 数组名是数组⾸元素的地址，类型是int*的，就可以存放在parr数组中
	int* parr[3] = { arr1,arr2,arr2 };
	for (int i = 0; i < 3; i++) 
	{
		for (int j = 0; j < 6; j++) 
		{
			printf("%d ", parr[i][j]);
		}
		printf("\n");
	}
	return 0;
}